Servlet হল একটি Java প্রোগ্রাম যা HTTP রিকোয়েস্ট এবং রেসপন্স প্রক্রিয়া করে ওয়েব অ্যাপ্লিকেশনের মধ্যে কাজ করে। এটি সাধারণত HttpServlet ক্লাসের এক্সটেনশন হিসেবে তৈরি করা হয়। প্রথম Servlet প্রোগ্রামটি খুবই সহজ এবং এটি HTTP রিকোয়েস্টের প্রতি একটি সাধারণ "Hello World" রেসপন্স প্রদান করে।
এখানে আমরা Hello World Servlet তৈরি করব যা HTTP GET রিকোয়েস্টে "Hello, World!" মেসেজ রিটার্ন করবে।
1. প্রথম Servlet প্রোগ্রাম তৈরি করা
1.1 Servlet Class
Servlet ক্লাসটি সাধারণত HttpServlet ক্লাসের সাথে ইন্টারঅ্যাক্ট করে এবং তার মেথডগুলো (যেমন doGet(), doPost()) ওভাররাইড করে। আমাদের এই প্রোগ্রামে doGet() মেথড ব্যবহার হবে।
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorldServlet extends HttpServlet {
// doGet() মেথড যা HTTP GET রিকোয়েস্ট হ্যান্ডেল করে
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// রেসপন্সের কনটেন্ট টাইপ সেট করা
response.setContentType("text/html");
// আউটপুট লেখার জন্য PrintWriter ব্যবহার করা
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
}
এখানে:
- doGet() মেথড HTTP GET রিকোয়েস্ট হ্যান্ডেল করে।
- response.setContentType("text/html"): এটি রেসপন্সের কনটেন্ট টাইপকে HTML হিসেবে সেট করে।
- PrintWriter: এটি রেসপন্স বডিতে আউটপুট লেখার জন্য ব্যবহৃত হয়।
2. সার্ভলেট মেপিং
Servlet কে ওয়েব অ্যাপ্লিকেশনের মধ্যে মেপিং করতে হয়, যাতে একটি নির্দিষ্ট URL প্যাটার্নে রিকোয়েস্ট আসলে সার্ভলেটটি কল হয়। এটি web.xml কনফিগারেশন ফাইল বা @WebServlet অ্যানোটেশন ব্যবহার করে করা যেতে পারে।
2.1 web.xml কনফিগারেশন
web.xml ফাইল হল একটি ডিপ্লয়মেন্ট ডিসক্রিপ্টর যা ওয়েব অ্যাপ্লিকেশনের সার্ভলেট কনফিগারেশন সংজ্ঞায়িত করে।
<web-app>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
এখানে:
- : সার্ভলেটের নাম নির্ধারণ করে।
- : সার্ভলেটের ক্লাসের নাম।
- :
/helloURL প্যাটার্নের জন্য সার্ভলেট মেপিং করা হয়েছে।
2.2 @WebServlet অ্যানোটেশন
Java 6 থেকে, সার্ভলেট মেপিং @WebServlet অ্যানোটেশন ব্যবহার করেও করা যেতে পারে। এটি web.xml ফাইলের পরিবর্তে কোডে সরাসরি সার্ভলেট কনফিগারেশন করতে দেয়।
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
}
এখানে:
- @WebServlet("/hello"):
/helloURL প্যাটার্নের জন্য সার্ভলেট মেপিং করা হয়েছে।
3. সার্ভলেট ডিপ্লয়মেন্ট
3.1 সার্ভলেট কনটেইনার
Servlet ক্লাস রান করার জন্য একটি Servlet Container বা Servlet Engine প্রয়োজন হয়। একটি জনপ্রিয় সার্ভলেট কন্টেইনার হল Apache Tomcat, যা সার্ভলেট ও JSP রান করার জন্য ব্যবহৃত হয়।
3.2 সার্ভলেট কন্টেইনারে ডিপ্লয় করা
- প্রথমে HelloWorldServlet ক্লাসটি .java ফাইলে তৈরি করুন।
- সার্ভলেট ক্লাসটি কম্পাইল করুন।
- সার্ভলেট কনটেইনার (যেমন Tomcat) এর webapps ফোল্ডারে অ্যাপ্লিকেশন ডিপ্লয় করুন।
- সার্ভলেট কনটেইনার চালু করুন।
- ব্রাউজারে
http://localhost:8080/your-web-app-name/helloURL টি প্রবেশ করুন।
আপনি যদি web.xml কনফিগারেশন ব্যবহার করেন তবে নিশ্চিত করুন যে web.xml ফাইলটি WEB-INF ফোল্ডারে সঠিকভাবে স্থাপন করা আছে।
4. সার্ভলেট আউটপুট
যখন আপনি ব্রাউজারে http://localhost:8080/hello URL টি প্রবেশ করবেন, তখন সার্ভলেটটি HTTP GET রিকোয়েস্ট গ্রহণ করবে এবং "Hello, World!" মেসেজ সহ একটি HTML পেজ রিটার্ন করবে।
আউটপুট:
Hello, World!
5. সার্ভলেটের জীবনচক্র
একটি সার্ভলেটের জীবনচক্র কনটেইনার দ্বারা পরিচালিত হয় এবং এটি তিনটি মূল পর্যায় নিয়ে গঠিত:
- Initialization: সার্ভলেট প্রথমবার কনটেইনারে ইনস্ট্যান্সিয়েট হয় এবং init() মেথড কল হয়।
- Request Handling: এরপর সার্ভলেট কনটেইনার HTTP রিকোয়েস্ট গ্রহণ করে এবং service() মেথড কল করে, যা উপযুক্ত HTTP মেথড (যেমন
doGet(),doPost()) কল করে। - Destruction: যখন সার্ভলেট কনটেইনার থেকে সরিয়ে ফেলা হয়, তখন destroy() মেথড কল হয়।
সারাংশ
এই উদাহরণে, আমরা একটি Hello World Servlet তৈরি করেছি যা HTTP GET রিকোয়েস্টের জন্য "Hello, World!" মেসেজ রিটার্ন করে। সার্ভলেটের জন্য দুটি প্রধান কনফিগারেশন পদ্ধতি রয়েছে:
- web.xml ফাইলের মাধ্যমে সার্ভলেট মেপিং।
- @WebServlet অ্যানোটেশন ব্যবহার করে সরাসরি সার্ভলেট মেপিং। সার্ভলেট কনটেইনারে ডিপ্লয় করার পর, সার্ভলেটটি একটি ওয়েব রিকোয়েস্টের মাধ্যমে কার্যকরী হয়ে ওঠে।
Read more